/********************************************************************************
  * @file     SD93F115B_dbgmcu.c
  * @author   TEST TEAM 												    	
  * @version  v0															    	
  * @date     Septemper 2022												    	
  * @brief
  *
  * Copyright (C) 2020  Hangzhou SDIC Microelectronics Co., Ltd
**********************************************************************************/

/****************Includes****************/    
#include "SD93F115B_dbgmcu.h"
 
/*----------------------------------
 * 函数功能：读MCU的ID码
 * 入口参数：None
 * 出口参数：None
 * 返回值  ：Device revision identifier
 * 编写日期：
 * 作者    ：
 *----------------------------------*/
uint32_t DBGMCU_GetIDR(void)
{
   return(DBGMCU->IDR);
}

/*----------------------------------
 * 函数功能：配置MCU的启动方式
 * 入口参数：DBGMCU_MEM_MODE,NewState
 *           DBGMCU_MEM_MODE: DBGMCU_MEM_MODE_RAM;DBGMCU_MEM_MODE_BOOT;DBGMCU_MEM_MODE_FLASH
 *           NewState: ENABLE;DISABLE
 * 出口参数：None
 * 返回值  ：None
 * 编写日期：
 * 作者    ：
 *----------------------------------*/
void DBGMCU_StartupModeConfig(uint8_t DBGMCU_MEM_MODE,FunctionalState NewState)
{
	assert_param(IS_DBGMCU_StartupMode(DBGMCU_MEM_MODE));
	uint32_t tmpreg=0;

	if (NewState != DISABLE)
	{
		DBGMCU->CR |= DBGMCU_CR_MMC_HRST;
	}
	else
	{
		DBGMCU->CR &= ~DBGMCU_CR_MMC_HRST;
	}
	
	tmpreg=DBGMCU->CR & 0xFFFF000F;
	tmpreg |= (DBGMCU_MEM_MODE<<14);
	DBGMCU->CR=tmpreg;
}

/*----------------------------------
 * 函数功能：使能硬件复位MCU
 * 入口参数：NewState: ENABLE;DISABLE
 * 出口参数：None
 * 返回值  ：None
 * 编写日期：
 * 作者    ：
 *----------------------------------*/
void DBGMCU_MCUHardResetCmd(FunctionalState NewState)
{
	/* Check the parameters */;
	assert_param(IS_FUNCTIONAL_STATE(NewState));
	
	if (NewState != DISABLE)
	{
		DBGMCU->CR |= DBGMCU_CR_MMC_HRST;
	}
	else
	{
		DBGMCU->CR &= ~DBGMCU_CR_MMC_HRST;
	}

}
 
/*-----------------------------------------
 * 函数功能：内核进入调试状态时，外设配置
 * 入口参数：DBGMCU_Periph,NewState
 *           DBGMCU_Periph: DBGMCU_WWDG_STOP;DBGMCU_IWDG_STOP;DBGMCU_I2CTIMEOUT_STOP
 *           NewState: ENABLE;DISABLE
 * 出口参数：None
 * 返回值  ：None
 * 编写日期：
 * 作者    ：
 *-----------------------------------------*/
void DBGMCU_PeriphModeConfig(uint32_t DBGMCU_Periph, FunctionalState NewState)
{
	/* Check the parameters */
	assert_param(IS_DBGMCU_PERIPH(DBGMCU_Periph));
	assert_param(IS_FUNCTIONAL_STATE(NewState));
	
	if (NewState != DISABLE)
	{
		DBGMCU->CR|= DBGMCU_Periph;
	}
	else
	{
		DBGMCU->CR&=~DBGMCU_Periph;
	}
	
}

/*----------------------------------
 * 函数功能：从bootloader启动时硬件独立看门狗停止工作（默认停止）
 * 入口参数：NewState: ENABLE（停止）;DISABLE
 * 出口参数：None
 * 返回值  ：None
 * 编写日期：
 * 作者    ：
 *----------------------------------*/
void DBGMCU_BOOT_IWDG_STOPCmd(FunctionalState NewState)
{
	/* Check the parameters */;
	assert_param(IS_FUNCTIONAL_STATE(NewState));
	
	if (NewState != DISABLE)
	{
		DBGMCU->CR |= BOOT_IWDG_STOP;
	}
	else
	{
		DBGMCU->CR &= ~BOOT_IWDG_STOP;
	}
}

/*-------------------------------------------
 * 函数功能：使能低功耗模式下仍可进行DBG调试
 * 入口参数：NewState: ENABLE;DISABLE
 * 出口参数：None
 * 返回值  ：None
 * 编写日期：
 * 作者    ：
 *-------------------------------------------*/
 void DBGMCU_LowPower_DBGMCUCmd(FunctionalState NewState)
 {
	/* Check the parameters */
	assert_param(IS_FUNCTIONAL_STATE(NewState));
	
	if (NewState != DISABLE)
	{
		DBGMCU->CR|= DBGMCU_CR_LPMD;
	}
	else
	{
		DBGMCU->CR &=~DBGMCU_CR_LPMD;
	} 
	
 }
 
/****************************END OF FILE****************************/